/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package fisica;

import hibernate.Sesion;
import hibernate.objeto.NombreComercialMedicamento;
import java.util.Vector;
import org.hibernate.Query;
import presentacion.utilidad.Paginador;

/**
 *
 * @author Gonzalo
 */
public class NombreComercialMedicamentoFisica extends CapaFisica {

    /**
     * Retorna el vector de objetos NombresComercialMedicamento que están activos
     * en la base de datos.
     *
     * @return El vector de objetos NombreComercialMedicamento consultado, null
     * si no existe
     */
    public static Vector<NombreComercialMedicamento> getAllEnBd() {
        Query q = Sesion.sesion.createQuery(
                "from NombreComercialMedicamento " +
                "where enBdNombreComercialMedicamento = true"
                );

        return getVectorObjetos(q);
    }

    /**
     * Retorna el vector de objetos NombrecomercialMedicamento, según el
     * nombre comercial del medicamento, ordenado por nombre de medicamento.
     *
     * @param nombreComercialMedicamento El nombre comercial del medicamento
     * @param estado false si es baja lógica, true si aún activo
     * @return El vector de objetos NombreComercialMedicamento consultado, null
     * si no existe
     */
    public static Vector<NombreComercialMedicamento>
            getVectorNombreComercialMedicamentoEnBdPorNombreComercialYEnBd(
            String nombreComercialMedicamento, boolean estado) {
        Query q = Sesion.sesion.createQuery(
                "from NombreComercialMedicamento " +
                "where lower(sinacentos(nombreNombreComercialMedicamento)) " +
                "like lower(sinacentos('%" + nombreComercialMedicamento + "%')) and "
                + "enBdNombreComercialMedicamento =  " + estado
                + " order by nombreNombreComercialMedicamento asc");

        Paginador.paginar(q);

        return getVectorObjetos(q);
    }

    /**
     * Retorna el vector de objetos NombresComercialMedicamento según el
     * principio activo asociado.
     *
     * @param nombrePrincipioActivoMedicamento El nombre del principio activo
     * asociado
     * @param estado false si es baja lógica, true si aún activo
     * @return El vector de objetos NombreComercialMedicamento consultado, null
     * si no existe
     */
    public static Vector<NombreComercialMedicamento>
            getVectorNombreComercialMedicamentoEnBdPorPrincipioActivoMedicamentoYEnBd(
            String nombrePrincipioActivoMedicamento, boolean estado) {
        Query q = Sesion.sesion.createQuery(
                "from NombreComercialMedicamento " +
                "where lower(sinacentos(" +
                "principioActivoMedicamento.nombrePrincipioActivoMedicamento)) = " +
                "lower(sinacentos('" + nombrePrincipioActivoMedicamento + "')) and " +
                "enBdNombreComercialMedicamento =  " + estado
                + " order by nombreNombreComercialMedicamento asc");

        Paginador.paginar(q);

        return getVectorObjetos(q);
    }

    /**
     * Retorna el vector de objetos NombreComercialMedicamento según el grupo
     * terapeutico asociado.
     *
     * @param nombreGrupoTerapeuticoMedicamento El nombre del grupo terapeutico
     * asociado
     * @param estado false si es baja lógica, true si aún activo
     * @return El vector de objetos NombreComercialMedicamento consultado, null
     * si no existe
     */
    public static Vector<NombreComercialMedicamento>
            getVectorNombreComercialMedicamentoEnBdPorGrupoTerapeuticoMedicamentoYEnBd(
            String nombreGrupoTerapeuticoMedicamento, boolean estado) {
        Query q = Sesion.sesion.createQuery(
                "from NombreComercialMedicamento " +
                "where lower(sinacentos(grupoTerapeuticoMedicamento.nombreGrupoTerapeuticoMedicamento)) = "
                + "lower(sinacentos('" + nombreGrupoTerapeuticoMedicamento + "')) and "
                + "enBdNombreComercialMedicamento = "  + estado
                + " order by nombreNombreComercialMedicamento asc");

        Paginador.paginar(q);

        return getVectorObjetos(q);
    }

    /**
     * Retorna el vector de objetos NombreComercialMedicamento según el
     * laboratorio asociado.
     *
     * @param nombreLaboratorioMedicamento El nombre del laboratorio asociado     *
     * @param estado false si es baja lógica, true si aún activo
     * @return Un vector de objetos NombreComercial consultado, null si no existe
     */
    public static Vector<NombreComercialMedicamento>
            getVectorNombreComercialMedicamentoPorLaboratorioMedicamentoYEnBd(
            String nombreLaboratorioMedicamento, boolean estado) {
        Query q = Sesion.sesion.createQuery(
                "from NombreComercialMedicamento " +
                "where lower(sinacentos(laboratorioMedicamento.nombreLaboratorioMedicamento)) = " +
                "lower(sinacentos('" + nombreLaboratorioMedicamento + "')) and "
                + "enBdNombreComercialMedicamento = " + estado
                + " order by nombreNombreComercialMedicamento asc");

        Paginador.paginar(q);

        return getVectorObjetos(q);
    }

    /**
     * Retorna el objeto NombreComercialMedicamento según el nombre comercial
     * del medicamento.
     *
     * @param nombreComercialMedicamento El nombre comercial del medicamento
     * @param estado false si es baja lógica, true si aún activo
     * @return El objeto NombreComercial consultado, null si no existe
     */
    public static NombreComercialMedicamento
            getNombreComercialMedicamentoPorNombreComercialYPorEnBd(
            String nombreComercialMedicamento, boolean estado) {
        Query q = Sesion.sesion.createQuery(
                "from NombreComercialMedicamento " +
                "where lower(sinacentos(nombreNombreComercialMedicamento)) = " +
                "lower(sinacentos('" + nombreComercialMedicamento + "')) and  " +
                "enBdNombreComercialMedicamento = " + estado
                );

        return (NombreComercialMedicamento) getObjeto(q);
    }

    /**
     * Retorna el objeto NombreComercialMedicamento según el id.
     *
     * @param idNombreComercialMedicamento El id del nombre comercial
     * @param estado false si es baja lógica, true si aún activo
     * @return El objeto NombreComercialMedicamento consultado, null si no existe
     */
    public static NombreComercialMedicamento getNombreComercialMedicamentoPorIdYPorEnBd(
            int idNombreComercialMedicamento, boolean estado) {
        Query q = Sesion.sesion.createQuery(
                "from NombreComercialMedicamento " +
                "where idNombreComercialMedicamento = " + idNombreComercialMedicamento + " and  "
                + "enBdNombreComercialMedicamento = " + estado
                );

        return (NombreComercialMedicamento) getObjeto(q);
    }
     
}
